#pragma once

//#define __debug__ 1

// Define types.
using qword = unsigned long long;
using dword = unsigned int;
using word = unsigned short;
using byte = unsigned char;
using real4 = float;
using real8 = double;

// Definations.
#define RUNNING 0x01
#define DEBUG 0x02
#define ERROR 0x04
#define ZERO 0x10
#define POS 0x20
#define NEG 0x40
#define STACK_FULL 0x100
#define STACK_EMPTY 0x200

// Define enum values.
enum REG
{
	Code,
	Stack,
	Base,
	Count,
	Flag = 7
};
enum DTYPE
{
	BYTE,
	WORD,
	DWORD,
	QWORD,
	REAL4,
	REAL8
};
enum CTYPE
{
	SPEC,
	CALC,
	MEMOP
};
enum CONDITION
{
	NONE,
	EQU,
	GT,
	GE,
	LT,
	LE,
	NEQ,
	ALL
};

// Define function.
template <class T>
void setValue(T value, byte reg);